package com.bpz.utils;

import java.text.MessageFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * Created by ayakatsune on 14-7-12.
 */
public class MakeCodeUtils {
    /**
     * @param dateStr 日期时间
     * @param format  格式化类型
     * @return 指定日期时间格式化
     */
    public String getDateTime(String dateStr, String format) {
        SimpleDateFormat df = new SimpleDateFormat(format);
        Date date = new Date(dateStr);
        return df.format(date);
    }

    /**
     * @param dateStr
     * @return 指定日期格式化  yyyy-MM-dd
     */
    public String getDate(String dateStr) {
        return getDateTime(dateStr, "yyyy-MM-dd");
    }

    /**
     * @param dateStr
     * @return 指定日期时间格式化  yyyy-MM-dd HH:mm:ss
     */
    public String getDateTime(String dateStr) {
        return getDateTime(dateStr, "yyyy-MM-dd HH:mm:ss");
    }

    /**
     * @param format
     * @return 当前日期时间
     */
    public String getNowDateTime(String format) {
        Date date = new Date();
        return getDateTime(date.toString(), format);
    }

    /**
     * @param name
     * @param split
     * @return 返回每个分隔符之间首字母大写的字符串 如：　ＴａｂｌｅＮａｍｅ
     */
    public String getAlias(String name, String split) {
        if (StringUtils.isEmpty(name)) {
            return name;
        } else {
            if (StringUtils.isEmpty(split)) {
                split = "_";
            }
            String[] nArr = name.split(split);
            StringBuilder s = new StringBuilder();
            for (int i = 0; i < nArr.length; i++) {
                s.append(toUpperCaseFirstOne(nArr[i]));
            }
            return s.toString();
        }
    }

    /**
     * @param name
     * @return 返回每个分隔符之间首字母大写的字符串 如：　ＴａｂｌｅＮａｍｅ,默认以下划线＿为分隔符
     */
    public String getAlias(String name) {
        return getAlias(name, "_");
    }

    /**
     * 一个别名，首字母小写 如：ｔａｂｌｅＮａｍｅ
     *
     * @param name  　原名
     * @param split 　原名分隔符
     * @return　　首字母小写的别名
     */
    public String getAliasLowerFirst(String name, String split) {
        String alias = "";
        if (StringUtils.isEmpty(split))
            alias = getAlias(name);
        else {
            alias = getAlias(name, split);
        }
        return toLowerCaseFirstOne(alias);
    }

    /**
     * 一个别名，首字母小写 如：ｔａｂｌｅＮａｍｅ
     *
     * @param name 　原名
     * @return　　首字母小写的别名
     */
    public String getAliasLowerFirst(String name) {
        return getAliasLowerFirst(name, "");
    }

    /**
     * 字符串格式化
     *
     * @param str
     * @param obj
     * @return
     */
    public String messageFormat(String str, Object... obj) {
        return MessageFormat.format(str, obj);
    }


    /**
     * @param s
     * @return 首字母小写
     */
    public String toLowerCaseFirstOne(String s) {
        return StringUtils.toLowerCaseFirstOne(s);
    }

    /**
     * @param s
     * @return 首字母大写
     */
    public String toUpperCaseFirstOne(String s) {
        return StringUtils.toUpperCaseFirstOne(s);
    }

    /**
     * 转为小写
     *
     * @param str
     * @return
     */
    public String toLowerCase(String str) {
        if (StringUtils.isEmpty(str))
            return str;
        return str.toLowerCase();
    }

    /**
     * 转为大写
     *
     * @param str
     * @return
     */
    public String toUpperCase(String str) {
        if (StringUtils.isEmpty(str))
            return str;
        return str.toUpperCase();
    }

    public static void main(String[] args) {
        MakeCodeUtils m = new MakeCodeUtils();
        String s = m.getAliasLowerFirst("ACSFDSA");
        System.out.println(s);
        s = m.toLowerCaseFirstOne("AdkkkdsA");
        System.out.println(s);

        s = m.messageFormat("#'{'{0}'}'", "测试");
        System.out.println("MakeCodeUtils.main" + s);
    }
}
